/* 
 * File:   Posicion.h
 * Author: Maximiliano Monzon
 *
 * Created on 25 de septiembre de 2012, 17:02
 */

#ifndef POSICION_H
#define	POSICION_H

#define ROTACION_180H 9 // rotación de 180 grados en sentido horario
#define ROTACION_90HN 6  // rotación de 90 grados en sentido antihorario
#define ROTACION_0H 3    // sin ninguna rotación
#define ROTACION_90H 0  // rotación de 90 grados en sentido horario
#define ROTACION_NULA -1// rotación indefinida.


namespace TP{ namespace Grafica { 
        
    class Posicion {

        public:

            Posicion();

            Posicion(const long int  pFila, const long int pColumna, const short int pOrientacion);
            
            Posicion (const Posicion& pPosicion);

            virtual ~Posicion();

            long int getFila() const;
            
            long int setFila(const long int pFila);

            long int getColumna() const;
            
            long int setColumna(const long int pColumna);

            short int getOrientacion () const;
            
            short int setOrientacion (const short int pOrientacion);
            
            Posicion& operator= (const Posicion &rhs);
            
            const Posicion operator+ (const Posicion &rhs) const;
            
            const Posicion operator- (const Posicion &rhs) const;

        private:
            long int fila
                   , columna;
            short int orientacion;
    };
        
}}

#endif	/* POSICION_H */

